﻿Imports PTIC_Util
Imports PTIC_Util.GestionCalculs
Imports OMANE.Common.Model.Parametrage

Namespace Comptes

    ''' <summary>
    ''' Moteur de calcul des comptes
    ''' </summary>
    ''' <remarks></remarks>
    Public Class ComptesMoteur2
        Inherits CalculCompose

#Region "Les fonctions de calcul intermédiaires"
        Private _compteTechniqueVie As CompteTechniqueVie_V2
        Private _besoinsFondsPropres As CompteBesoinsFondsPropres_V2
        Private _compteTechniqueNonVie As CompteTechniqueNonVie_V2
        Private _compteNonTechnique As CompteNonTechnique_V2
        Private _bilan As Bilan_V2
        Private _compteTresorerie As CompteTresorerie_V2
        Private _indicateurs As Indicateurs_V2
#End Region

#Region "Propriétés du calcul"
        Private _nombreAnneesProjection As Integer
        Private _anneePremiereGeneration As Integer
        Private _projectionsAnnuelles As ProjectionAnneesReelles
        Private _listeParametres As ParametresList
#End Region

#Region "Constructeur"

        ''' <summary>
        ''' Constructeur
        ''' </summary>
        ''' <remarks></remarks>
        Public Sub New()
            _unite = 1
            _besoinsFondsPropres = New CompteBesoinsFondsPropres_V2()
            _compteTechniqueVie = New CompteTechniqueVie_V2(False)
            _compteTechniqueNonVie = New CompteTechniqueNonVie_V2(False, False)
            _compteNonTechnique = New CompteNonTechnique_V2()
            _bilan = New Bilan_V2()
            _compteTresorerie = New CompteTresorerie_V2()
            _indicateurs = New Indicateurs_V2()
            _nombreAnneesProjection = 0
            _anneePremiereGeneration = 0
            ModeRecalcul = TypeRecalcul.SurOrdre
        End Sub

#End Region

#Region "Propriétés"

        ''' <summary>
        ''' Compte technique Vie
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public ReadOnly Property CompteTechniqueVie() As CompteTechniqueVie_V2
            Get
                Return _compteTechniqueVie
            End Get
        End Property

        ''' <summary>
        ''' Compte technique non vie
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public ReadOnly Property CompteTechniqueNonVie() As CompteTechniqueNonVie_V2
            Get
                Return _compteTechniqueNonVie
            End Get
        End Property

        ''' <summary>
        ''' Compte des besoins en fonds propres
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public ReadOnly Property CompteBesoinFondsPropres() As CompteBesoinsFondsPropres_V2
            Get
                Return _besoinsFondsPropres
            End Get
        End Property

        ''' <summary>
        ''' Compte non technique
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public ReadOnly Property CompteNonTechnique() As CompteNonTechnique_V2
            Get
                Return _compteNonTechnique
            End Get
        End Property

        ''' <summary>
        ''' Bilan
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public ReadOnly Property Bilan() As Bilan_V2
            Get
                Return _bilan
            End Get
        End Property

        ''' <summary>
        ''' Compte de trésorerie
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public ReadOnly Property CompteTresorerie() As CompteTresorerie_V2
            Get
                Return _compteTresorerie
            End Get
        End Property

        ''' <summary>
        ''' Indicateurs
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public ReadOnly Property Indicateur() As Indicateurs_V2
            Get
                Return _indicateurs
            End Get
        End Property

        ''' <summary>
        ''' Représente le nombre d'années sur lesquelles la projection est faite lors de la simulation
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property NombreAnneesProjection() As Double
            Get
                Return _nombreAnneesProjection
            End Get
            Set(ByVal value As Double)
                If value <> _nombreAnneesProjection Then
                    _nombreAnneesProjection = value
                    Invalider()
                    RaiseEvent NbAnneesProjectionChanged(Me, New EventArgs)
                End If
            End Set
        End Property

        ''' <summary>
        ''' Représente l'année de départ
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property AnneePremiereGeneration() As Integer
            Get
                Return _anneePremiereGeneration
            End Get
            Set(ByVal value As Integer)
                If value <> _anneePremiereGeneration And value <= 2100 And value >= 1990 Then
                    _anneePremiereGeneration = value
                    RaiseEvent PremiereAnneeProjectionChanged(Me, New EventArgs)
                End If
            End Set
        End Property

        ''' <summary>
        ''' Projections annuelles
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property ProjectionsAnnuelles() As ProjectionAnneesReelles
            Get
                Return _projectionsAnnuelles
            End Get
            Set(ByVal value As ProjectionAnneesReelles)
                If Not value.Equals(_projectionsAnnuelles) Then
                    _projectionsAnnuelles = value
                    Invalider()
                End If
            End Set
        End Property

        ''' <summary>
        ''' Liste des paramètres utilisés pour calculer les comptes
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property ListeParametres() As ParametresList
            Get
                Return _listeParametres
            End Get
            Set(ByVal value As ParametresList)
                If Not value.Equals(_listeParametres) Then
                    _listeParametres = value
                    Invalider()
                End If
            End Set
        End Property

        ''' <summary>
        ''' Prise en compte ou non d'une provision pour sinistres connus en cas de décès
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property HasPMdc() As Boolean
            Get
                Return CompteTechniqueVie.hasPMdc
            End Get
            Set(ByVal value As Boolean)
                If CompteTechniqueVie.hasPMdc <> value Then
                    CompteTechniqueVie.hasPMdc = value
                    If ModeRecalcul = TypeRecalcul.Automatique Then
                        _compteTechniqueVie.Invalider()
                        _besoinsFondsPropres.Invalider()
                        _compteTechniqueNonVie.Invalider()
                        _compteNonTechnique.Invalider()
                        _bilan.Invalider()
                        _compteTresorerie.Invalider()
                        _indicateurs.Invalider()
                        procedureCalcul()
                        RaiseEvent HasPMdc_Changed(Me, New EventArgs)
                        'RaiseEventAfterCalculer(Me, New EventArgs)
                    Else
                        Invalider()
                    End If
                End If
            End Set
        End Property
        Public Event HasPMdc_Changed As EventHandler

        ''' <summary>
        ''' Prise en compte ou non d'une provision de rente
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property HasPMrente() As Boolean
            Get
                Return CompteTechniqueNonVie.hasPMrente
            End Get
            Set(ByVal value As Boolean)
                If CompteTechniqueNonVie.hasPMrente <> value Then
                    CompteTechniqueNonVie.hasPMrente = value
                    If ModeRecalcul = TypeRecalcul.Automatique Then
                        _compteTechniqueVie.Invalider()
                        _besoinsFondsPropres.Invalider()
                        _compteTechniqueNonVie.Invalider()
                        _compteNonTechnique.Invalider()
                        _bilan.Invalider()
                        _compteTresorerie.Invalider()
                        _indicateurs.Invalider()
                        procedureCalcul()
                        RaiseEvent HasPMrente_Changed(Me, New EventArgs)
                        'RaiseEventAfterCalculer(Me, New EventArgs)
                    Else
                        Invalider()
                    End If
                End If
            End Set
        End Property
        Public Event HasPMrente_Changed As EventHandler

        ''' <summary>
        ''' Prise en compte ou non d'une provision pour risques croissants
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property HasPPRC() As Boolean
            Get
                Return CompteTechniqueNonVie.hasPPRC
            End Get
            Set(ByVal value As Boolean)
                If CompteTechniqueNonVie.hasPPRC <> value Then
                    CompteTechniqueNonVie.hasPPRC = value
                    If ModeRecalcul = TypeRecalcul.Automatique Then
                        _compteTechniqueVie.Invalider()
                        _besoinsFondsPropres.Invalider()
                        _compteTechniqueNonVie.Invalider()
                        _compteNonTechnique.Invalider()
                        _bilan.Invalider()
                        _compteTresorerie.Invalider()
                        _indicateurs.Invalider()
                        procedureCalcul()
                        RaiseEvent HasPPRC_Changed(Me, New EventArgs)
                    Else
                        Invalider()
                    End If
                End If
            End Set
        End Property
        Public Event HasPPRC_Changed As EventHandler

        ''' <summary>
        ''' Unite de calcul des comptes
        ''' </summary>
        ''' <remarks></remarks>
        Private _unite As Double
        Public Property Unite As Double
            Get
                Return _unite
            End Get
            Set(ByVal value As Double)
                If value <> _unite Then
                    _unite = value
                    If ModeRecalcul = TypeRecalcul.Automatique Then
                        _compteTechniqueVie.Invalider()
                        _besoinsFondsPropres.Invalider()
                        _compteTechniqueNonVie.Invalider()
                        _compteNonTechnique.Invalider()
                        _bilan.Invalider()
                        _compteTresorerie.Invalider()
                        _indicateurs.Invalider()
                        procedureCalcul()
                        RaiseEvent Unite_Changed(Me, New EventArgs)
                    Else
                        Invalider()
                    End If
                End If
            End Set
        End Property
        Public Event Unite_Changed As EventHandler

#End Region

#Region "Mise à jour des comptes"

        ''' <summary>
        ''' Procédure de calcul
        ''' </summary>
        ''' <remarks></remarks>
        Protected Overrides Sub procedureCalcul()
            If Not _projectionsAnnuelles.Pcom_DC Is Nothing And Not _listeParametres Is Nothing Then
                MAJcompteBesoinsFondsPropres()
                MAJcompteTechVie()
                MAJcompteTechNonVie()
                MAJcompteNonTechnique()
                MAJbilan()
                MAJcompteTresorerie()
                MAJindicateurs()

                If Unite <> 1 Then

                    For i As Integer = 1 To Me.NombreAnneesProjection

                        'Besoins en fonds propres
                        With CompteBesoinFondsPropres.Resultats
                            .MSRvie(i - 1) = .MSRvie(i - 1) / Unite
                            .MSRnonVie(i - 1) = .MSRnonVie(i - 1) / Unite
                            .CapiAllouesVie(i - 1) = .CapiAllouesVie(i - 1) / Unite
                            .CapiAllouesNonVie(i - 1) = .CapiAllouesNonVie(i - 1) / Unite
                            .CapiAlloues(i - 1) = .CapiAlloues(i - 1) / Unite
                        End With

                        'Compte technique vie
                        With CompteTechniqueVie.Resultats
                            .PrimesDC(i - 1) = .PrimesDC(i - 1) / Unite
                            .SinRegles(i - 1) = .SinRegles(i - 1) / Unite
                            .PmDCouv(i - 1) = .PmDCouv(i - 1) / Unite
                            .ProduitPlacements(i - 1) = .ProduitPlacements(i - 1) / Unite
                            .Fg(i - 1) = .Fg(i - 1) / Unite
                            .ChargePlacements(i - 1) = .ChargePlacements(i - 1) / Unite
                            .ProduitPlacementsTransferes(i - 1) = .ProduitPlacementsTransferes(i - 1) / Unite
                            .ComApporteur(i - 1) = .ComApporteur(i - 1) / Unite
                            .ResultatVie(i - 1) = .ResultatVie(i - 1) / Unite
                        End With

                        'Compte technique non vie
                        With CompteTechniqueNonVie.Resultats
                            .PrimesIT(i - 1) = .PrimesIT(i - 1) / Unite
                            .SinReglesIT(i - 1) = .SinReglesIT(i - 1) / Unite
                            .PmRenteouv(i - 1) = .PmRenteouv(i - 1) / Unite
                            .PmPPRCouv(i - 1) = .PmPPRCouv(i - 1) / Unite
                            .ProduitPlacementsAlloues(i - 1) = .ProduitPlacementsAlloues(i - 1) / Unite
                            .TaxeAssu(i - 1) = .TaxeAssu(i - 1) / Unite
                            .PmRenteClot(i - 1) = .PmRenteClot(i - 1) / Unite
                            .PmPPRCClot(i - 1) = .PmPPRCClot(i - 1) / Unite
                            .Fg(i - 1) = .Fg(i - 1) / Unite
                            .ComApporteur(i - 1) = .ComApporteur(i - 1) / Unite
                            .ResultatsNonVie(i - 1) = .ResultatsNonVie(i - 1) / Unite
                        End With

                        'Compte non technique
                        With CompteNonTechnique.Resultats
                            .ResultatVie(i - 1) = .ResultatVie(i - 1) / Unite
                            .ResultatNonVie(i - 1) = .ResultatNonVie(i - 1) / Unite
                            .ProduitPlacementsAlloues(i - 1) = .ProduitPlacementsAlloues(i - 1) / Unite
                            .ProduitPlacements(i - 1) = .ProduitPlacements(i - 1) / Unite
                            .ProduitPlacementsTransferes(i - 1) = .ProduitPlacementsTransferes(i - 1) / Unite
                            .ChargePlacements(i - 1) = .ChargePlacements(i - 1) / Unite
                            .ImpotsEtTaxes(i - 1) = .ImpotsEtTaxes(i - 1) / Unite
                            .Resultat(i - 1) = .Resultat(i - 1) / Unite
                        End With

                        'Bilan
                        With Bilan.Resultats
                            .ProvisionsTechniquesBrutes(i - 1) = .ProvisionsTechniquesBrutes(i - 1) / Unite
                            .CapitalSocialNonLibere(i - 1) = .CapitalSocialNonLibere(i - 1) / Unite
                            .Placements(i - 1) = .Placements(i - 1) / Unite
                            .CapitalSocialOuv(i - 1) = .CapitalSocialOuv(i - 1) / Unite
                            .ApportSolvabilite(i - 1) = .ApportSolvabilite(i - 1) / Unite
                            .ResultatN_1(i - 1) = .ResultatN_1(i - 1) / Unite
                            .ApportResultatNeg(i - 1) = .ApportResultatNeg(i - 1) / Unite
                            .PassifsSubordonnes(i - 1) = .PassifsSubordonnes(i - 1) / Unite
                            .TotalActif(i - 1) = .TotalActif(i - 1) / Unite
                            .TotalPassif(i - 1) = .TotalPassif(i - 1) / Unite
                        End With

                        'Compte de trésorerie
                        With CompteTresorerie.Resultats
                            .FluxActionnaire(i - 1) = .FluxActionnaire(i - 1) / Unite
                            .VariationCapiSocial(i - 1) = .VariationCapiSocial(i - 1) / Unite
                            .ResultatDistribue(i - 1) = .ResultatDistribue(i - 1) / Unite
                        End With
                    Next
                End If
            End If
        End Sub
        ''' <summary>
        ''' 
        ''' </summary>
        ''' <remarks></remarks>
        Public Overrides Sub Invalider()
            MyBase.Invalider()
            _compteTechniqueVie.Invalider()
            _besoinsFondsPropres.Invalider()
            _compteTechniqueNonVie.Invalider()
            _compteNonTechnique.Invalider()
            _bilan.Invalider()
            _compteTresorerie.Invalider()
            _indicateurs.Invalider()
        End Sub

        ''' <summary>
        ''' Paramétrage et lancement du Compte des Besoins en Fonds Propres
        ''' </summary>
        ''' <remarks></remarks>
        Private Sub MAJcompteBesoinsFondsPropres()

            Dim paramCompteBesoinsFondsPropres As CompteBesoinsFondsPropres_V2.Parametres
            paramCompteBesoinsFondsPropres = New CompteBesoinsFondsPropres_V2.Parametres

            paramCompteBesoinsFondsPropres.MSRvie = _projectionsAnnuelles.MRS_Vie
            paramCompteBesoinsFondsPropres.nbAnneesProjetees = NombreAnneesProjection
            paramCompteBesoinsFondsPropres.PcomINCINV = _projectionsAnnuelles.PCom_INCINV
            paramCompteBesoinsFondsPropres.RatioFdsPropresSurMSR = ListeParametres.Tx_FondPropSurMSR.ValeursEnCours
            paramCompteBesoinsFondsPropres.SinRegINCINV = _projectionsAnnuelles.SinRegINCINV
            paramCompteBesoinsFondsPropres.TaxeAssurance = ListeParametres.Tx_TaxeAssu.ValeursEnCours
            paramCompteBesoinsFondsPropres.nbAnneesProjetees = NombreAnneesProjection

            CompteBesoinFondsPropres.ParametresEntree = paramCompteBesoinsFondsPropres
            CompteBesoinFondsPropres.Calculer()

        End Sub
        ''' <summary>
        ''' Paramétrage et lancement du Compte Technique Vie
        ''' </summary>
        ''' <remarks></remarks>
        Private Sub MAJcompteTechVie()

            Dim paramCompteVie As New CompteTechniqueVie_V2.Parametres

            paramCompteVie.PrixGarantiePTIA = ListeParametres.Tx_PrixGarantiePTIA.ValeursEnCours
            paramCompteVie.Tx_rendActifs_Ann = ListeParametres.Tx_RendActifsA.ValeursEnCours
            paramCompteVie.Tx_TechAnn = ListeParametres.Tx_TechA.ValeursEnCours
            paramCompteVie.ComApporteur = ListeParametres.Tx_CommiContA.ValeursEnCours
            paramCompteVie.Cout_annTSDI = ListeParametres.Tx_CoutEmprSuboA.ValeursEnCours
            paramCompteVie.Tx_CouvTSDI = ListeParametres.Tx_CouvEmprSuboA.ValeursEnCours
            paramCompteVie.Fg = ListeParametres.Tx_fraiGestA.ValeursEnCours
            paramCompteVie.NbAnneesProjetees = NombreAnneesProjection
            paramCompteVie.PmDCclotTheo = _projectionsAnnuelles.PM_DCtheo
            paramCompteVie.PrimesDC = _projectionsAnnuelles.Pcom_DC
            paramCompteVie.SinRegles = _projectionsAnnuelles.SinReg_DC
            paramCompteVie.CapiAllouesVie = CompteBesoinFondsPropres.Resultats.CapiAllouesVie

            CompteTechniqueVie.ParametresEntree = paramCompteVie
            CompteTechniqueVie.Calculer()
        End Sub
        ''' <summary>
        ''' Paramétrage et lancement du Compte Technique Non Vie
        ''' </summary>
        ''' <remarks></remarks>
        Private Sub MAJcompteTechNonVie()

            Dim paramCompteNonVie As New CompteTechniqueNonVie_V2.Parametres

            paramCompteNonVie.ComApporteur = ListeParametres.Tx_CommiContA.ValeursEnCours
            paramCompteNonVie.Fg = ListeParametres.Tx_fraiGestA.ValeursEnCours
            paramCompteNonVie.NbAnneesProjetees = NombreAnneesProjection
            paramCompteNonVie.PmITclotTheo = _projectionsAnnuelles.PM_INCINVtheo
            paramCompteNonVie.PmPPRCItTheo = _projectionsAnnuelles.PPRC_INCINVtheo
            paramCompteNonVie.PmRenteItTheo = _projectionsAnnuelles.PM_renteTheo

            paramCompteNonVie.PrimesIT = _projectionsAnnuelles.PCom_INCINV
            paramCompteNonVie.SinReglesIT = _projectionsAnnuelles.SinRegINCINV
            paramCompteNonVie.Taxe_Assu = ListeParametres.Tx_TaxeAssu.ValeursEnCours
            paramCompteNonVie.Tx_TechA = ListeParametres.Tx_TechA.ValeursEnCours

            CompteTechniqueNonVie.ParametresEntree = paramCompteNonVie
            CompteTechniqueNonVie.Calculer()

        End Sub
        ''' <summary>
        ''' Paramétrage et lancement du compte Non Technique
        ''' </summary>
        ''' <remarks></remarks>
        Private Sub MAJcompteNonTechnique()

            Dim paramCompteNonTechnique As New CompteNonTechnique_V2.Parametres
            paramCompteNonTechnique.CapitauxAllouesNonVie = CompteBesoinFondsPropres.Resultats.CapiAllouesNonVie
            paramCompteNonTechnique.CoutAdditionnelTSDI = ListeParametres.Tx_CoutEmprSuboA.ValeursEnCours
            paramCompteNonTechnique.NbAnneesProjetees = NombreAnneesProjection
            paramCompteNonTechnique.ProduitPlacementsAlloues = CompteTechniqueVie.Resultats.ProduitPlacementsTransferes
            'Calcul des provisions ouverture et clôture en INCAP/INVAL
            ReDim paramCompteNonTechnique.ProvClotureIT(NombreAnneesProjection - 1)
            ReDim paramCompteNonTechnique.ProvOuvertureIT(NombreAnneesProjection - 1)
            For i As Integer = 0 To NombreAnneesProjection - 1
                paramCompteNonTechnique.ProvClotureIT(i) = CompteTechniqueNonVie.Resultats.PmRenteClot(i) + _
                                                           CompteTechniqueNonVie.Resultats.PmPPRCClot(i)
                paramCompteNonTechnique.ProvOuvertureIT(i) = CompteTechniqueNonVie.Resultats.PmRenteouv(i) + _
                                                             CompteTechniqueNonVie.Resultats.PmPPRCouv(i)
            Next
            paramCompteNonTechnique.ResultatNonVie = CompteTechniqueNonVie.Resultats.ResultatsNonVie
            paramCompteNonTechnique.ResultatVie = CompteTechniqueVie.Resultats.ResultatVie
            paramCompteNonTechnique.TxCouvertureTSDI = ListeParametres.Tx_CouvEmprSuboA.ValeursEnCours
            paramCompteNonTechnique.TxImpositionIS = ListeParametres.Tx_TaxeImpoA.ValeursEnCours
            paramCompteNonTechnique.TxRendActifsAnn = ListeParametres.Tx_RendActifsA.ValeursEnCours
            paramCompteNonTechnique.TxTechAnn = ListeParametres.Tx_TechA.ValeursEnCours
            CompteNonTechnique.ParametresEntree = paramCompteNonTechnique
            CompteNonTechnique.Calculer()
        End Sub
        ''' <summary>
        ''' Paramétrage et lancement du calcul du bilan
        ''' </summary>
        ''' <remarks></remarks>
        Private Sub MAJbilan()
            Dim paramBilan As New Bilan_V2.Parametres
            paramBilan.NbAnneesProjetees = NombreAnneesProjection
            paramBilan.TxCouvertureTSDI = ListeParametres.Tx_CouvEmprSuboA.ValeursEnCours
            paramBilan.CapitauxAlloues = CompteBesoinFondsPropres.Resultats.CapiAlloues
            ReDim paramBilan.ProvisionsTechniquesBrutes(NombreAnneesProjection - 1)
            For i As Integer = 0 To NombreAnneesProjection - 1
                paramBilan.ProvisionsTechniquesBrutes(i) = CompteTechniqueVie.Resultats.PmDCouv(i) + _
                                                           CompteTechniqueNonVie.Resultats.PmRenteouv(i) + _
                                                           CompteTechniqueNonVie.Resultats.PmPPRCouv(i)
            Next
            paramBilan.Resultat = CompteNonTechnique.Resultats.Resultat
            paramBilan.TxCouvertureTSDI = ListeParametres.Tx_CouvEmprSuboA.ValeursEnCours
            Bilan.ParametresEntree = paramBilan
            Bilan.Calculer()
        End Sub
        ''' <summary>
        ''' Paramétrage et lancement du compte de trésorerie
        ''' </summary>
        ''' <remarks></remarks>
        Private Sub MAJcompteTresorerie()
            Dim paramTresorerie As New CompteTresorerie_V2.Parametres
            paramTresorerie.NbAnneesProjetees = NombreAnneesProjection
            paramTresorerie.ResultatDistribue = Bilan.Resultats.ResultatN_1
            paramTresorerie.VariationCapiSocial = Bilan.Resultats.ApportSolvabilite
            CompteTresorerie.ParametresEntree = paramTresorerie
            CompteTresorerie.Calculer()
        End Sub
        ''' <summary>
        ''' Paramétrage et lancement du calcul des indicateurs
        ''' </summary>
        ''' <remarks></remarks>
        Private Sub MAJindicateurs()
            Dim paramIndicateurs As New Indicateurs_V2.Parametres
            With paramIndicateurs
                .nbAnneesProjetees = NombreAnneesProjection
                .Fg = ListeParametres.Tx_fraiGestA.ValeursEnCours
                .ComPartenaire = ListeParametres.Tx_CommiContA.ValeursEnCours
                .taxe = ListeParametres.Tx_TaxeAssu.ValeursEnCours
                .ApprortSolvabilite = Bilan.Resultats.ApportSolvabilite
                .CapitauxAlloues = CompteBesoinFondsPropres.Resultats.CapiAlloues
                .CapitauxSociauxOuv = Bilan.Resultats.CapitalSocialOuv
                .FluxActionnaire = CompteTresorerie.Resultats.FluxActionnaire
                .primesHT_DC = CompteTechniqueVie.Resultats.PrimesDC
                .primesHT_IT = CompteTechniqueNonVie.Resultats.PrimesIT
                .Rend_AnnAttendu = ListeParametres.Tx_RendActionnairesA.ValeursEnCours
                .Resultat = CompteNonTechnique.Resultats.Resultat
                .sinRegles_DC = CompteTechniqueVie.Resultats.SinRegles
                .sinRegles_IT = CompteTechniqueNonVie.Resultats.SinReglesIT
            End With
            Indicateur.ParametresEntree = paramIndicateurs
            Indicateur.Calculer()
        End Sub

#End Region

#Region "Evènements générés"

        Public Event NbAnneesProjectionChanged As EventHandler
        Public Event PremiereAnneeProjectionChanged As EventHandler

#End Region

    End Class

End Namespace